Typically, fault tolerance for a virtual machine (VM) running on a host in a cluster of VM hosts involves creating a shadow copy of a primary VM. The memory changes in the primary VM are updated to the memory of the shadow copy. If the primary VM goes down, the shadow copy starts functioning to prevent downtime for the VM. Because the primary VM and shadow VM utilize different memory pages in different hosts that are inaccessible by other hosts in the cluster, maintaining the shadow copy memory is a time consuming, inefficient, and costly process.